home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / gcl-1.000 / gcl-1 / gcl-1.0 / cmpnew / cmpcatch.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-10  |  6.9 KB  |  249 lines

  1.  
  2. #include <cmpinclude.h>
  3. #include "cmpcatch.h"
  4. init_cmpcatch(){do_init(VV);}
  5. /*    local entry for function C1CATCH    */
  6.  
  7. static object LI1(V2)
  8.  
  9. register object V2;
  10. {     VMB1 VMS1 VMV1
  11. TTL:;
  12.     {object V3;
  13.     object V4;
  14.     V3= (VFUN_NARGS=2,(*(LnkLI23))(VV[0],Ct));
  15.     V4= Cnil;
  16.     setq(VV[1],number_plus(symbol_value(VV[1]),small_fixnum(1)));
  17.     if(!(endp((V2)))){
  18.     goto T5;}
  19.     (void)((*(LnkLI24))(VV[2],small_fixnum(1),small_fixnum(0)));
  20. T5:;
  21.     V4= (*(LnkLI25))(car((V2)));
  22.     (void)((*(LnkLI26))((V3),cadr((V4))));
  23.     V2= (*(LnkLI27))(cdr((V2)));
  24.     (void)((*(LnkLI26))((V3),cadr((V2))));
  25.     {object V5 = list(4,VV[2],(V3),(V4),(V2));
  26.     VMR1(V5)}}
  27. }
  28. /*    local entry for function C2CATCH    */
  29.  
  30. static object LI2(V8,V9)
  31.  
  32. object V8;object V9;
  33. {     VMB2 VMS2 VMV2
  34.     bds_check;
  35. TTL:;
  36.     bds_bind(VV[3],symbol_value(VV[3]));
  37.     bds_bind(VV[4],VV[5]);
  38.     V10= (*(LnkLI28))((V8));
  39.     bds_unwind1;
  40.     princ_str("\n    if(nlj_active)",VV[6]);
  41.     princ_str("\n    {nlj_active=FALSE;frs_pop();",VV[6]);
  42.     (void)((VFUN_NARGS=2,(*(LnkLI29))(VV[7],VV[8])));
  43.     princ_char(125,VV[6]);
  44.     princ_str("\n    else{",VV[6]);
  45.     base[1]= make_cons(VV[10],symbol_value(VV[9]));
  46.     bds_bind(VV[9],base[1]);
  47.     base[2]= (V9);
  48.     vs_top=(vs_base=base+2)+1;
  49.     (void) (*Lnk30)();
  50.     vs_top=sup;
  51.     bds_unwind1;
  52.     princ_char(125,VV[6]);
  53.     {object V11 = Cnil;
  54.     bds_unwind1;
  55.     VMR2(V11)}
  56. }
  57. /*    local entry for function SET-PUSH-CATCH-FRAME    */
  58.  
  59. static object LI3(V13)
  60.  
  61. object V13;
  62. {     VMB3 VMS3 VMV3
  63. TTL:;
  64.     princ_str("\n    frs_push(FRS_CATCH,",VV[6]);
  65.     (void)((*(LnkLI31))((V13)));
  66.     princ_str(");",VV[6]);
  67.     {object V14 = Cnil;
  68.     VMR3(V14)}
  69. }
  70. /*    local entry for function C1UNWIND-PROTECT    */
  71.  
  72. static object LI4(V16)
  73.  
  74. register object V16;
  75. {     VMB4 VMS4 VMV4
  76.     bds_check;
  77. TTL:;
  78.     {object V17;
  79.     object V18;
  80.     V17= (VFUN_NARGS=2,(*(LnkLI23))(VV[0],Ct));
  81.     V18= Cnil;
  82.     setq(VV[1],number_plus(symbol_value(VV[1]),small_fixnum(1)));
  83.     if(!(endp((V16)))){
  84.     goto T35;}
  85.     (void)((*(LnkLI24))(VV[11],small_fixnum(1),small_fixnum(0)));
  86. T35:;
  87.     base[1]= make_cons(VV[13],symbol_value(VV[12]));
  88.     base[2]= make_cons(VV[13],symbol_value(VV[14]));
  89.     base[3]= make_cons(VV[13],symbol_value(VV[15]));
  90.     bds_bind(VV[12],base[1]);
  91.     bds_bind(VV[14],base[2]);
  92.     bds_bind(VV[15],base[3]);
  93.     V19= (*(LnkLI25))(car((V16)));
  94.     bds_unwind1;
  95.     bds_unwind1;
  96.     bds_unwind1;
  97.     V18= V19;
  98.     (void)((*(LnkLI26))((V17),cadr((V18))));
  99.     V16= (*(LnkLI27))(cdr((V16)));
  100.     (void)((*(LnkLI26))((V17),cadr((V16))));
  101.     {object V20 = list(4,VV[11],(V17),(V18),(V16));
  102.     VMR4(V20)}}
  103. }
  104. /*    local entry for function C2UNWIND-PROTECT    */
  105.  
  106. static object LI5(V23,V24)
  107.  
  108. object V23;object V24;
  109. {     VMB5 VMS5 VMV5
  110.     bds_check;
  111. TTL:;
  112.     {register object V25;
  113.     object V26;
  114.     bds_bind(VV[3],symbol_value(VV[3]));
  115.     V25= list(2,VV[16],(*(LnkLI32))());
  116.     V26= Cnil;
  117.     princ_str("\n    {object tag;frame_ptr fr;object p;bool active;",VV[6]);
  118.     princ_str("\n    frs_push(FRS_PROTECT,Cnil);",VV[6]);
  119.     princ_str("\n    if(nlj_active){tag=nlj_tag;fr=nlj_fr;active=TRUE;}",VV[6]);
  120.     princ_str("\n    else{",VV[6]);
  121.     bds_bind(VV[4],VV[17]);
  122.     bds_bind(VV[18],Cnil);
  123.     (void)((*(LnkLI28))((V23)));
  124.     V26= (VV[18]->s.s_dbind);
  125.     bds_unwind1;
  126.     bds_unwind1;
  127.     princ_str("\n    active=FALSE;}",VV[6]);
  128.     princ_str("\n    ",VV[6]);
  129.     (void)((*(LnkLI31))((V25)));
  130.     princ_str("=Cnil;",VV[6]);
  131.     princ_str("\n    while(vs_base<vs_top)",VV[6]);
  132.     princ_str("\n    {",VV[6]);
  133.     (void)((*(LnkLI31))((V25)));
  134.     princ_str("=MMcons(vs_top[-1],",VV[6]);
  135.     (void)((*(LnkLI31))((V25)));
  136.     princ_str(");vs_top--;}",VV[6]);
  137.     princ_str("\n    ",VV[6]);
  138.     (void)((*(LnkLI33))());
  139.     princ_str("\n    nlj_active=FALSE;frs_pop();",VV[6]);
  140.     bds_bind(VV[4],VV[19]);
  141.     V27= (*(LnkLI28))((V24));
  142.     bds_unwind1;
  143.     princ_str("\n    vs_base=vs_top=base+",VV[6]);
  144.     (void)((*(LnkLI31))((VV[3]->s.s_dbind)));
  145.     princ_char(59,VV[6]);
  146.     setq(VV[20],Ct);
  147.     princ_str("\n    for(p= ",VV[6]);
  148.     (void)((*(LnkLI31))((V25)));
  149.     princ_str(";!endp(p);p=MMcdr(p))vs_push(MMcar(p));",VV[6]);
  150.     princ_str("\n    if(active)unwind(fr,tag);else{",VV[6]);
  151.     if(((V26))==Cnil){
  152.     goto T94;}
  153.     V28= car((V26));
  154.     goto T92;
  155. T94:;
  156.     V28= Cnil;
  157. T92:;
  158.     (void)((VFUN_NARGS=3,(*(LnkLI29))(VV[7],Cnil,V28)));
  159.     princ_str("}}",VV[6]);
  160.     {object V29 = Cnil;
  161.     bds_unwind1;
  162.     VMR5(V29)}}
  163. }
  164. /*    local entry for function C1THROW    */
  165.  
  166. static object LI6(V31)
  167.  
  168. register object V31;
  169. {     VMB6 VMS6 VMV6
  170. TTL:;
  171.     {object V32;
  172.     object V33;
  173.     V32= (VFUN_NARGS=0,(*(LnkLI23))());
  174.     V33= Cnil;
  175.     if(endp((V31))){
  176.     goto T100;}
  177.     if(!(endp(cdr((V31))))){
  178.     goto T99;}
  179. T100:;
  180.     V34 = make_fixnum(length((V31)));
  181.     (void)((*(LnkLI24))(VV[21],small_fixnum(2),V34));
  182. T99:;
  183.     if(endp(cddr((V31)))){
  184.     goto T104;}
  185.     V35 = make_fixnum(length((V31)));
  186.     (void)((*(LnkLI34))(VV[21],small_fixnum(2),V35));
  187. T104:;
  188.     V33= (*(LnkLI25))(car((V31)));
  189.     (void)((*(LnkLI26))((V32),cadr((V33))));
  190.     V31= (*(LnkLI25))(cadr((V31)));
  191.     (void)((*(LnkLI26))((V32),cadr((V31))));
  192.     {object V36 = list(4,VV[21],(V32),(V33),(V31));
  193.     VMR6(V36)}}
  194. }
  195. /*    local entry for function C2THROW    */
  196.  
  197. static object LI7(V39,V40)
  198.  
  199. register object V39;object V40;
  200. {     VMB7 VMS7 VMV7
  201.     bds_check;
  202. TTL:;
  203.     {register object V41;
  204.     bds_bind(VV[3],symbol_value(VV[3]));
  205.     V41= Cnil;
  206.     princ_str("\n    {frame_ptr fr;",VV[6]);
  207.     {object V42= car((V39));
  208.     if((V42!= VV[35]))goto T117;
  209.     V41= caddr((V39));
  210.     goto T116;
  211. T117:;
  212.     if((V42!= VV[22]))goto T119;
  213.     V41= make_cons(VV[22],caddr((V39)));
  214.     goto T116;
  215. T119:;
  216.     V41= list(2,VV[16],(*(LnkLI32))());
  217.     bds_bind(VV[4],(V41));
  218.     V43= (*(LnkLI28))((V39));
  219.     bds_unwind1;}
  220. T116:;
  221.     princ_str("\n    fr=frs_sch_catch(",VV[6]);
  222.     (void)((*(LnkLI31))((V41)));
  223.     princ_str(");",VV[6]);
  224.     princ_str("\n    if(fr==NULL) FEerror(\"The tag ~s is undefined.\",1,",VV[6]);
  225.     (void)((*(LnkLI31))((V41)));
  226.     princ_str(");",VV[6]);
  227.     bds_bind(VV[4],VV[17]);
  228.     V44= (*(LnkLI28))((V40));
  229.     bds_unwind1;
  230.     princ_str("\n    unwind(fr,",VV[6]);
  231.     (void)((*(LnkLI31))((V41)));
  232.     princ_str(");}",VV[6]);
  233.     {object V45 = Cnil;
  234.     bds_unwind1;
  235.     VMR7(V45)}}
  236. }
  237. static object  LnkTLI34(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_proc(VV[34],&LnkLI34,3,ap);} /* TOO-MANY-ARGS */
  238. static object  LnkTLI33(){return call_proc0(VV[33],&LnkLI33);} /* RESET-TOP */
  239. static object  LnkTLI32(){return call_proc0(VV[32],&LnkLI32);} /* VS-PUSH */
  240. static object  LnkTLI31(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_proc(VV[31],&LnkLI31,1,ap);} /* WT1 */
  241. static LnkT30(){ call_or_link(VV[30],&Lnk30);} /* C2EXPR */
  242. static object  LnkTLI29(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_vproc(VV[29],&LnkLI29,ap);} /* UNWIND-EXIT */
  243. static object  LnkTLI28(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_proc(VV[28],&LnkLI28,1,ap);} /* C2EXPR* */
  244. static object  LnkTLI27(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_proc(VV[27],&LnkLI27,1,ap);} /* C1PROGN */
  245. static object  LnkTLI26(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_proc(VV[26],&LnkLI26,2,ap);} /* ADD-INFO */
  246. static object  LnkTLI25(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_proc(VV[25],&LnkLI25,1,ap);} /* C1EXPR */
  247. static object  LnkTLI24(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_proc(VV[24],&LnkLI24,3,ap);} /* TOO-FEW-ARGS */
  248. static object  LnkTLI23(va_alist)va_dcl{va_list ap;va_start(ap);return(object )call_vproc(VV[23],&LnkLI23,ap);} /* MAKE-INFO */
  249.